String.prototype.format = function (a) {
    var b = RegExp("(?:%(\\d+))", "mg"),
        c = 0,
        d = [];
    do {
        var e = b.exec(this);
        if (e && e[1]) {
            e.index > c && d.push(this.substring(c, e.index));
            d.push(a[parseInt(e[1])]);
            c = b.lastIndex;
        }
    } while (e);
    c < this.length && d.push(this.substring(c, this.length));
    return d.join("");
};

function resizeMainFrame() {
    var height = 0;
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        height = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        height = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        height = document.body.clientHeight;
    }

    var mainFrame = document.getElementById('mainFrame');

    mainFrame.height = height - 115;
}

$$ = $$ || {};
if (!window.$$) var $$ = {};
$$.app = $$.app || {};

(function (app, jQ) {

    app.zdl = new function () {

        var _xhr = null;

        var ui = {
            formAddItem: '<tr class="addItemForm" data-type="%0">\
                                <td>\
                                    <table class="itemPost" style="padding:5px" height="92%" cellspacing="2" cellpadding="1" width="96%" align="center" bgcolor="#ffffff" border="0">\
                                        <tbody>\
                                            <tr>\
                                                <td>\
                                                    <b>Nội dung:</b>\
                                                </td>\
                                            </tr>\
                                            <tr>\
                                                <td>\
                                                    <textarea name="content" class="content inputForm" id="content" placeholder="Nhập nội dung thông báo"></textarea>\
                                                </td>\
                                            </tr>\
                                            <tr>\
                                                <td>\
                                                    <b>Thời gian:</b>\
                                                </td>\
                                            </tr>\
                                            <tr>\
                                                <td>\
                                                    <input type="text" class="time inputForm" id="time" name="time"/>\
                                                </td>\
                                            </tr>\
                                            <tr>\
                                                <td style="text-align: center">\
                                                    <input type="button" class="inputForm accept" value="Submit"/>\
                                                    <input type="button" class="inputForm cancel" value="Cancel"/>\
                                                </td>\
                                            </tr>\
                                        </tbody>\
                                    </table>\
                                </td>\
                            </tr>'
        };

        this.init = function () {

            _initEditable();
            _initEventAddPost();

            jQ('.triggerDelete').click(function () {

                var itemPost = jQ(this).parents('.itemPost');

                if (confirm("Bạn có chắc chắn muốn xóa thông báo này ?")) {

                    parent.location.href = base_url + 'zdl/delPost/' + itemPost.data('id');
                }
            });
        };

        var _initEventAddPost = function () {

            var addPost = $('.addItem');

            addPost.click(function () {

                addPost.hide();
                var $this = jQ(this);
                var wrapThis = $this.parents('.wrapAddItem');
                var $form = $(ui.formAddItem.format([$this.data('type')]));

                //Append form
                wrapThis.after($form);

                _initFormAddPost($form);
            });
        };

        var _initFormAddPost = function (form) {

            var addPost = $('.addItem');
            form.find('.cancel').click(function () {

                addPost.show();
                form.remove();
            });

            //Add time mask
            form.find('.time').mask('9999-99-99 99:99:99');

            form.find('.accept').click(function () {

                var content = $.trim(form.find('.content').val());
                var time = $.trim(form.find('.time').val());

                if (content == '' || time == '') {

                    alert("Nội dung và thời gian không được để trống!");
                } else {

                    if (_xhr != null) _xhr.abort();

                    _xhr = $.ajax({
                        type: 'POST',
                        url: base_url + 'zdl/addPost',
                        data: {
                            'content': content,
                            'time': time,
                            'type': form.data('type')
                        },
                        dataType: 'json',
                        success: function (result) {

                            if (result.status == '1') {
                                alert("Thêm mới thông báo thành công!");
                                location.reload();
                            } else {

                                alert('Có lỗi xảy ra! Vui lòng thử lại!');
                                return false;
                            }
                        }
                    });
                }
            });
        };

        var _initEditable = function () {

            jQ('.contentEditable').editable(base_url + 'zdl/editPost', {
                event: 'content_edit',
                type: 'autogrow',
                submit: 'OK',
                cancel: 'Cancel',
                indicator: 'Wait...',
                id: 'hk',
                name: 'ns',
                css: 'inherit',
                onblur: "cancel",
                cssclass: "editable",
                submitdata: function (value, settings) {
                    var itemPost = jQ(this).parents('.itemPost');

                    return {
                        'type': itemPost.data('type'),
                        'edit': 'content',
                        'id': itemPost.data('id')
                    };
                },
                "onsubmit": function (settings, td) {

                    var input = jQ(td).find('input');
                    var original = input.val();
                    if (original == "") {
                        alert("Nội dung không được để trống!");
                        return false;
                    } else {
                        return true;
                    }
                },
                callback: function (value, settings) {
                    if (value == 'error') {
                        alert('An error has occurred!');
                        location.reload();
                    }
                    alert('Cập nhật thành công!');
                    jQ('.triggerEditContent').show();
                },
                "onreset": function () {
                    jQ('.triggerEditContent').show();
                }
            });

            jQ('.timeEditable').editable(base_url + 'zdl/editPost', {
                event: 'time_edit',
                type: 'masked',
                submit: 'OK',
                mask: "9999-99-99 99:99:99",
                cancel: 'Cancel',
                indicator: 'Wait...',
                id: 'hk',
                name: 'ns',
                css: 'inherit',
                onblur: "cancel",
                cssclass: "editable",
                submitdata: function (value, settings) {
                    var itemPost = jQ(this).parents('.itemPost');

                    return {
                        'type': itemPost.data('type'),
                        'edit': 'time',
                        'id': itemPost.data('id')
                    };
                },
                "onsubmit": function (settings, td) {

                    var input = jQ(td).find('input');
                    var original = input.val();
                    if (original == "") {
                        alert("Thời gian không được để trống!");
                        return false;
                    } else {
                        return true;
                    }
                },
                callback: function (value, settings) {
                    if (value == 'error') {
                        alert('An error has occurred!');
                        location.reload();
                    }
                    alert('Cập nhật thành công!');
                    jQ('.triggerEditTime').show();
                },
                "onreset": function () {
                    jQ('.triggerEditTime').show();
                }
            });

            jQ('.triggerEditContent').click(function () {

                jQ(this).parents('.itemPost').find('.contentEditable').trigger('content_edit');
                jQ(this).hide();
            });

            jQ('.triggerEditTime').click(function () {

                jQ(this).parents('.itemPost').find('.timeEditable').trigger('time_edit');
                jQ(this).hide();
            });
        };
    };

})($$.app, $);